home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 August / CHIP_CD_2004-08.iso / software / amc / amc_install.exe / {app} / Scripts / Yahoo Cinema (IT).ifs < prev    next >
Encoding:
Text File  |  2004-03-20  |  5.7 KB  |  219 lines

  1. // GETINFO SCRIPTING
  2. // Yahoo!Cinema
  3.  
  4. (***************************************************
  5. * Movie importation script for:                   *
  6. * Yahoo!Cinema (IT), http://it.movies.yahoo.com   *
  7. *                                                 *
  8. * (c) 2003 Andrea Cristaudo achris@tiscalinet.it  *
  9. *                                                 *
  10. * For use with Ant Movie Catalog 3.4.1            *
  11.  *  www.antp.be/software/moviecatalog              *
  12.  *                                                 *
  13.  *  This program is free software; you can         *
  14.  *  redistribute it and/or modify it under the     *
  15.  *  terms of the GNU General Public License as     *
  16.  *  published by the Free Software Foundation;     *
  17.  *  either version 2 of the License, or (at your   *
  18.  *  option) any later version.                     *
  19. ***************************************************)
  20.  
  21. program YahooCinema;
  22. var
  23. MovieName: string;
  24. TheMovieAddress: string;
  25.  
  26. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  27. var
  28. i: Integer;
  29. begin
  30. result := -1;
  31. if StartAt < 0 then
  32.   StartAt := 0;
  33. for i := StartAt to List.Count-1 do
  34.   if Pos(Pattern, List.GetString(i)) <> 0 then
  35.   begin
  36.    result := i;
  37.    Break;
  38.   end;
  39. end;
  40.  
  41. procedure AnalyzePage(Address: string);
  42. var
  43. Page: TStringList;
  44. LineNr: integer;
  45. BeginPos: integer;
  46. begin
  47. Page := TStringList.Create;
  48. Page.Text := GetPage(Address);
  49. LineNr := FindLine('<font face=arial,helvetica size=+1><b>Risultati ricerca</b></font>', Page, 0);
  50. if LineNr = -1 then
  51. begin
  52.   SetField(fieldURL, Address);
  53.   AnalyzeMoviePage(Page);
  54. end
  55. else
  56. begin
  57.   PickTreeClear;
  58.   AddMoviesTitles(Page);
  59.   if TheMovieAddress='' then
  60.   begin
  61.    if PickTreeExec(Address) then
  62.    begin
  63.     SetField(fieldURL, Address);
  64.     Page.Text := GetPage(Address);
  65.     AnalyzeMoviePage(Page);
  66.    end;
  67.   end
  68.   else
  69.   begin
  70.    SetField(fieldURL, TheMovieAddress);
  71.    Page.Text := GetPage(TheMovieAddress);
  72.    AnalyzeMoviePage(Page);
  73.   end;
  74. end;
  75. Page.Free;
  76. end;
  77.  
  78. procedure AnalyzeMoviePage(Page: TStringList);
  79. var
  80. Fine: Integer;
  81. Line: string;
  82. LineNr: Integer;
  83. BeginPos, EndPos: Integer;
  84. Field: integer;
  85. begin
  86. Fine := 0;
  87.   LineNr := FindLine('<td><font face=arial size=+1 color="#333366"><b>', Page, 0);
  88. if LineNr > -1 then
  89. begin
  90.   //Translated Title
  91.   Line := Page.GetString(LineNr);
  92.   HTMLRemoveTags(Line);
  93.  
  94.   SetField(fieldTranslatedTitle, copy(Line, 1, pos(' (', Line)));
  95.   Delete(Line, 1, pos(' (', Line) + 1);
  96.   Delete(Line, pos(')', Line), pos(')', Line) + 1);
  97.   SetField(fieldYear, Line);
  98.  
  99.   repeat
  100.    LineNr := LineNr + 1;
  101.    Line := Page.GetString(LineNr);
  102.  
  103.    if pos('<b>Genere: </b>', Line) = 1 then
  104.     begin
  105.      HTMLRemoveTags(Line);
  106.      Delete(Line, 1, 8);
  107.      SetField(fieldCategory, Line);
  108.     end
  109.    else if pos('<b>Durata: </b>', Line) = 1 then
  110.     begin
  111.      HTMLRemoveTags(Line);
  112.      Delete(Line, 1, 8);
  113.      BeginPos := pos(' - ', Line);
  114.  
  115.      SetField(fieldLength, copy(Line, 1, BeginPos - 1));
  116.  
  117.      Delete(Line, 1, BeginPos + 11);
  118.      SetField(fieldCountry, Line);
  119.  
  120.      LineNr := LineNr + 1;
  121.      Line := Page.GetString(LineNr);
  122.      HtmlRemoveTags(Line);
  123.      SetField(fieldDescription, Line);
  124.     end
  125.    else if pos('<b>Titolo Originale: </b>', Line) = 1 then
  126.     begin
  127.      HTMLRemoveTags(Line);
  128.      Delete(Line, 1, 18);
  129.      SetField(fieldOriginalTitle, Line);
  130.     end
  131.    else if pos('<b>Regia:</b>', Line) <> 0 then
  132.     begin
  133.      LineNr := LineNr + 1;
  134.      Line := Page.GetString(LineNr);
  135.      HtmlRemoveTags(Line);
  136.      SetField(fieldDirector, Line);
  137.     end
  138.    else if pos('<b>Prodotto da:</b>', Line) <> 0 then
  139.     begin
  140.      LineNr := LineNr + 1;
  141.      Line := Page.GetString(LineNr);
  142.      HtmlRemoveTags(Line);
  143.      SetField(fieldProducer, Line);
  144.     end
  145.    else if pos('<b>Attori:</b>', Line) <> 0 then
  146.     begin
  147.      LineNr := LineNr + 1;
  148.      Line := Page.GetString(LineNr);
  149.      HtmlRemoveTags(Line);
  150.      SetField(fieldActors, Line);
  151.     end
  152.    else if pos('alt="Immagine"', Line) <> 0 then
  153.     begin
  154.      Delete(Line, 1, pos('<img ', Line) + 10);
  155.      Delete(Line, pos('" width=', Line), pos('>', Line) + 1);
  156.      GetPicture(Line, False);
  157.     end
  158.  
  159.    else if Line = '</html>' then
  160.     Fine := 1;
  161.   until Fine = 1;
  162. end;
  163. DisplayResults;
  164. end;
  165.  
  166. procedure AddMoviesTitles(Page: TStringList);
  167. var
  168. LineNr: Integer;
  169. NewLineNr: Integer;
  170. Line: string;
  171. MovieTitle, MovieAddress: string;
  172. BeginPos, EndPos: Integer;
  173. begin
  174. TheMovieAddress := '*';
  175. LineNr := 0;
  176. LineNr := FindLine('<font face=arial,helvetica><b>Risulati Film</b>',Page,LineNr);
  177. LineNr := LineNr + 3;
  178. while LineNr > 2 do
  179. begin
  180.   Line := Page.GetString(LineNr);
  181.   BeginPos := pos('<li><b><a href="',Line)+16;
  182.   EndPos := pos('">',Line);
  183.   MovieAddress := copy(Line,BeginPos,EndPos-BeginPos);
  184.   Delete(Line,1,EndPos + 1);
  185.   BeginPos := 1;
  186.   EndPos := -1;
  187.   MovieTitle := Line;
  188.   HTMLRemoveTags(MovieTitle);
  189.   HTMLDecode(Movietitle);
  190.   PickTreeAdd(MovieTitle, MovieAddress);
  191.  
  192.   NewLineNr := FindLine('<li><b><a href="',Page,LineNr+1);
  193.   if NewLineNr <> (LineNr + 1) then
  194.    LineNr := 2
  195.   else
  196.    LineNr := NewLineNr;
  197.  
  198.   if TheMovieAddress='*' then
  199.    TheMovieAddress := MovieAddress
  200.   else
  201.    TheMovieAddress := '';
  202. end;
  203. if TheMovieAddress='*' then TheMovieAddress := '';
  204. end;
  205.  
  206. begin
  207. if CheckVersion(3,4,1) then
  208. begin
  209.   MovieName := GetField(fieldOriginalTitle);
  210.   if MovieName = '' then
  211.    MovieName := GetField(fieldTranslatedTitle);
  212.   if Input('Yahoo!Cinema Import', 'Enter the title of the movie:', MovieName) then
  213.   begin
  214.    AnalyzePage('http://it.search.movies.yahoo.com/search/movies_db_it?mt='+UrlEncode(MovieName));
  215.   end;
  216. end else
  217.   ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.4.1)');
  218. end.
  219.